<!DOCTYPE html>
<html lang="zh">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script>
        // 1.JS延迟加载的方式有哪些？（5）
        //defer属性、async属性,setTimeout 延时定时器(一次定时器)
        // 2.前端 JavaScript 中的 ECMAScript、DOM、BOM 的含义；（5）
        //ECMAScript：ECMA欧洲计算机制造协会简称，是JS的基础语法规范。
        //DOM:文档对象模型
        //BOM:浏览器对象模型
        // 3.JavaScript 的数据类型有哪些？（5）
        // js基本数据类型(简单数据类型)
        //     Sting，Number，boolean，undefined，null，symbol
        // js复杂数据类型
        //     Object对象数据类型，Array数据类型，function函数类型
        // 4.如何进行数据类型的判断？（5）
        // 1、typeof 判断数据类型（判断简单数据类型）
        // 2、instanceOf 判断构造函数（返回布尔值）
        // 5.null 和 undefined 的区别？什么时候会得到 undefined？（5）
        // 相同点：两者都是空值。
        // 不同点：null是空的对象，undefined是指声明的变量没有赋值。
        // 6.如何理解 null == undefined 返回 true，null === undefined 返回 false？（5）
        // 1.null == undefined ：“==”是等于号第一个数值等于第二个数值即可为true；
        // 2.null === undefined：‘===’全等于号是两个数值相等，并且数据类型相同才可以true，否则为false、
        // 7.使用 continue 或 break 终止循环时，两种方式的区别是？（5）
        // break 中断所有控制流程（）
        // continue 跳出当前符合条件的流程，继续下一个流程
        // 8.如何判断字符串内是否包含指定字符？（5）
        //可以使用 “indexOf” 字符串方法，输入指定字符，有的话返回下标，没有则返回-1.
        // 9.请尽量列举出数组的方法，并且注明哪些方法会修改原数组，哪些不会；（5）
        //不改变原数组：
        // concat();连接合并
        // join（）；转化字符串
        //改变原数组：
        // reverse（）；翻转数组
        // splice（）；或者数值
        // indexOf（）；查找值
        // lastIndexOf（）；最后一位开始查找值
        // push（）
        // includes（）

        // 10. 请写出下面语句的输出结果：（5）
        // var bar = true,
        //     number = 0;
        // console.log(bar + 0);//1
        // console.log(bar + "xyz");//true"xyz"
        // console.log(bar + true);//2
        // console.log(+true);//1
        // console.log(!'bluej');//false
        // console.log(number++);//1
        // console.log(++number);//1
        // console.log(number); //0

        // 11. 根据用户输入时间实现倒计时，输入格式错误时要有所提示（5）
        //window.prompt("请输入目标时间");
        // let endDate = new Date(window.prompt("请输入目标时间"));
        // let timer;
        // function timeFn(endDate) {
        //     let nowDate = new Date();//当前时间戳
        //     let tDiff = parseInt((endDate.getTime() - nowDate.getTime()) / 1000);//未来减当前的时间差

        //     if (tDiff > 0) {
        //         let day = parseInt(tDiff / 60 / 60 / 24);
        //         day = day < 10 ? '0' + day : day;
        //         let hour = parseInt(tDiff / 60 / 60 % 24);
        //         hour = hour < 10 ? '0' + hour : hour;
        //         let min = parseInt(tDiff / 60 % 60);
        //         min = min < 10 ? '0' + min : min;
        //         let s = parseInt(tDiff % 60);
        //         s = s < 10 ? '0' + s : s;

        //         console.log('剩余时间：' + day + '天' + hour + '时' + min + '分' + s + '秒');
        //     } else {
        //         console.clear();
        //         console.log("活动已经结束!");
        //         clearInterval(timer); //停止定时器
        //     }
        // };
        // // timeFn(endDate);

        // timer = setInterval(function () {
        //     timeFn(endDate);
        // }, 1000);





        // 13.把下面数组成员排序打乱；（5）
        let arr = [10, 20, 30, 40, 50, 60];
        let newArr = [];
        for (let i = 0; i < arr.length; i++) {
            let ran = Math.floor(Math.random() * arr.length);

            if (!newArr.includes(arr[ran])) {
                newArr.push(arr[ran]);
            } else {
                i--;
            }
        }
        console.log(newArr);


        // 12.输出从小到大排序好的五个不重复的随机"素数",范围[10-58)；（10）

        // 14. 将多个数组进行去重合并；（10）
        // var arr1 = [1, 2, 3],
        //     arr2 = [2, 3, 4, 5];

        // 15. 找出数组 arr=[1, 2, 3, "melon", 4, "melon", 2, 4, "melon"] 中重复出现过的元素,并用数组将重复元素装起来输出,并且统计每个元素出现的次数（10）

        // let arr = [1, 2, 3, "melon", 4, "melon", 2, 4, "melon"];
        // let newArr = [];

       // for (let i = 0; i < arr.length; i++) {}


        // 16. 找出数组中年龄小于18岁的女生的信息重新组成新的数组,并且将她们count变为现有的平方（10）
        // var arr = [{
        //     name: "111",
        //     sex: "boy",
        //     age: 18,
        //     count: 20
        // },
        // {
        //     name: "222",
        //     sex: "girl",
        //     age: 17,
        //     count: 30
        // },
        // {
        //     name: "333",
        //     sex: "boy",
        //     age: 16,
        //     count: 40
        // },
        // {
        //     name: "444",
        //     sex: "girl",
        //     age: 15,
        //     count: 50
        // },
        // {
        //     name: "555",
        //     sex: "boy",
        //     age: 20,
        //     count: 60
        // },
        // {
        //     name: "666",
        //     sex: "girl",
        //     age: 13,
        //     count: 70
        // },
        // {
        //     name: "777",
        //     sex: "boy",
        //     age: 14,
        //     count: 80
        // }
        // ]
    </script>
</body>

</html>